﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using E_Learning_V3.Models;
using E_Learning_V3.DAL;
using System.Web.Security;
using System.Data;

namespace ElearningOUHv2.Controllers
{
    public class TestController : Controller
    {
        private ElearningContext db = new ElearningContext();

        private List<Spg> spgListe = new List<Spg>();

        //
        // GET: /Svar/
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Index(Spg spg)
        {
            spg = Session["nySpg"] as Spg;
            if (spgListe.Count == 0 && spg == null)
            {

                string spgEmne = (string)Session["spgEmne"];
                spgListe = db.Emner.Where(model => model.emnenavn == spgEmne).First().spgList.ToList();
                if (spgListe.Count > 0)
                    spg = spgListe[0];
            }
            else if (spg.spgTekst == null)
            {
                spg = spgListe[0];
            }

            //Tjek om bruger har svaret på dette Spg før, hvis ja så gå til næste.
            if (TidligereSvar(spg))
            {
                Session["tidligereSpg"] = spg;
                return RedirectToAction("Next");
            }
            return View(spg);
        }

        private bool TidligereSvar(Spg spg)
        {
            Guid BrugerID = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;
            List<Svar> svarForSpg = (from svarItem in db.Svar
                                     where svarItem.spgId == spg.spgID && svarItem.userId == BrugerID
                                     select svarItem).ToList();

            if (svarForSpg.Count > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Modtagsvar(FormCollection form, Spg nextspg)
        {
            TempData["Spg"] = nextspg;
            Guid BrugerID = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;

            if (form[nextspg.spgTekst] == null)
            {
                ViewBag.ValidateValgtSvar = "Intet valgt";
                return View("Index", nextspg = db.Spg.Find(nextspg.spgID));
            }
            TempData["svar"] = form[nextspg.spgTekst];

            //Gem svardata til statistik
            Spg tempSpg = db.Spg.Find(nextspg.spgID);

            int valgtsvarmulighedsID = Convert.ToInt32(form[nextspg.spgTekst]);
            foreach (Svarmulighed svm in tempSpg.Svarmuligheder)
            {
                if (svm.svarmulighedID == valgtsvarmulighedsID)
                {
                    db.Svar.Add(new Svar { spgId = tempSpg.spgID, userId = BrugerID, svarmulighedId = valgtsvarmulighedsID, dato = DateTime.Now });
                }
            }

            //Tjek om brugersvar allerede findes

            db.SaveChanges();

            return RedirectToAction("SvarKonsekvens");
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult SvarKonsekvens()
        {
            Spg tempspg = (Spg)TempData["Spg"];
            Spg spg = db.Spg.Find(tempspg.spgID);
            ViewBag.Svar = TempData["svar"];
            TempData.Clear();
            ModelState.Clear();
            return View(spg);
        }

        public ActionResult Next(Spg spg)
        {
            if (Session["tidligereSpg"] != null)
            {
                spg = Session["tidligereSpg"] as Spg;
                Session.Remove("tidligereSpg");
            }
            string spgEmne = (string)Session["spgEmne"];
            spgListe = db.Emner.Where(model => model.emnenavn == spgEmne).First().spgList.ToList();
            for (int i = 0; i < spgListe.Count - 1; i++)
            {
                if (spgListe[i].spgID == spg.spgID)
                {
                    Spg tempSpg = spgListe[i + 1];
                    Session["nySpg"] = tempSpg;
                    return RedirectPermanent("Index");
                }
            }

            //Slutning på emne test er nået
            return RedirectToAction("IndexSpg", "Emne");
            //return RedirectPermanent("Index");
        }
    }
}
